package com.jayqqaa12.abase.core;

import java.util.Stack;

import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;


/***
 * 
 * 
 * 重新架构 原先的设计不太理想 直接推翻了
 * 
 * 现在 把自己有的工具类 保留   核心功能集成 其他 开源项目
 * 
 * 
 * 这个类还可以用来 管理 activity
 * 
 * @author 12
 *
 */
public class Abase
{

	private static Stack<Activity> activityStack;
	private static Abase instance;
	
	private Abase(){}
	
	private static Context context = null;

	public static Context getContext()
	{
		if (context == null) throw new NullPointerException("Sorry use Abase  must Abase.setContext() ");

		return context;
	}

	public static void setContext(Context context)
	{
		Abase.context = context.getApplicationContext();
	}

	
	/**
	 * 单一实例
	 */
	public static Abase getAppManager(){
		if(instance==null){
			instance=new Abase();
		}
		return instance;
	}
	/**
	 * 添加Activity到堆栈
	 */
	public void addActivity(Activity activity){
		if(activityStack==null){
			activityStack=new Stack<Activity>();
		}
		activityStack.add(activity);
	}
	/**
	 * 获取当前Activity（堆栈中最后一个压入的）
	 */
	public Activity currentActivity(){
		Activity activity=activityStack.lastElement();
		return activity;
	}
	/**
	 * 结束当前Activity（堆栈中最后一个压入的）
	 */
	public void finishActivity(){
		Activity activity=activityStack.lastElement();
		finishActivity(activity);
	}
	/**
	 * 结束指定的Activity
	 */
	public void finishActivity(Activity activity){
		if(activity!=null){
			activityStack.remove(activity);
			activity.finish();
			activity=null;
		}
	}
	/**
	 * 结束指定类名的Activity
	 */
	public void finishActivity(Class<?> cls){
		for (Activity activity : activityStack) {
			if(activity.getClass().equals(cls) ){
				finishActivity(activity);
			}
		}
	}
	/**
	 * 结束所有Activity
	 */
	public void finishAllActivity(){
		
		if(activityStack==null) return ;
		
		for (int i = 0, size = activityStack.size(); i < size; i++){
            if (null != activityStack.get(i)){
            	activityStack.get(i).finish();
            }
	    }
		activityStack.clear();
	}
	/**
	 * 退出应用程序
	 */
	public void AppExit(Context context) {
		try {
			finishAllActivity();
			ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
			activityMgr.restartPackage(context.getPackageName());
			System.exit(0);
		} catch (Exception e) {	}
	}
	





}
